<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // js中的类和对象；

      // 一、js中的对象
      // 1.如何创建；
      // 字面量创建
      // let obj1  ={name:"张三"};
      // // 内置构造函数
      // let obj2 = new Object();
      // obj2.name = "李四";

      // // 可以在对象的原型上创建属性和方法；
      // var obj3 =  Object.create({name:"王五"});
      // console.log(obj2);
      // console.log(obj3);

      // 二、js中的类；可以生产多个对象；
      // 1.工厂模式；（早期的类）
      // 多个人对象 ：小明 小张 小李---->共性特征抽象成类---》 姓名  年龄 走；

      // 人类工厂；抽象 类
      // 复用性强；
      function Person(name, age) {
        let obj = {}; //添加原材料
        obj.name = name; //加工原材料
        obj.age = age; //加工原材料
        obj.walk = function () {
          console.log("走");
        };
        return obj; //出厂
      }

      let xiaoming = Person("小明", 21); //具象
      let xiaozhang = Person("小张", 22);
      let xiaoli = Person("小李", 20);
      console.log(xiaoming, xiaozhang, xiaoli);

      // 需要一个狗类  名字 性别  叫
      // 生产2个小狗 ---》1.大黄 公 叫一次  2. 小黑  公  每隔一秒叫一次；

      function fn(name, gander) {
        let obj = {};
        obj.name = name;
        obj.gander = gander;
        obj.jiao = function () {
          console.log("jiao");
        };
        return obj;
      }

      let dahuang = fn("大黄", "公");
      dahuang.jiao();
      let xiaohei = fn("小黑", "公");
      setInterval(() => {
        xiaohei.jiao();
      }, 1000);
      let xiaoqiang = fn("小强", "公");
      setInterval(() => {
        xiaoqiang.jiao();
      }, 2000);
    </script>
  </body>
</html>
